<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Http\Request;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Support\Facades\Auth;

class LogArticleEvent
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $ip;
    public $admin_id;
    public $now_data;

    public $time;
    public $title;
    public $model_name;
    public $change_field;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($model, $title, $attr, $change = [])
    {
        $this->ip = request()->getClientIp();
        $this->admin_id = Auth::user()->id;
        $this->now_data = json_encode($attr);
        $this->time = time();
        $this->title = $title;
        $this->model_name = $model;
        $this->change_field = json_encode($change);
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}
